package com.lvmama.rhino.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.lvmama.rhino.entity.RequestSearchParam;
import com.lvmama.rhino.pojo.search.FlowSearchArrivalKey;
import com.lvmama.rhino.pojo.search.FlowSearchFilter;
import com.lvmama.rhino.pojo.search.FlowSearchFilterCondition;
import com.lvmama.rhino.pojo.search.FlowSearchJump;
import com.lvmama.rhino.pojo.search.FlowSearchKey;
import com.lvmama.rhino.pojo.search.FlowSearchKeyType;
import com.lvmama.rhino.pojo.search.FlowSearchPaging;
import com.lvmama.rhino.pojo.search.FlowSearchResult;
import com.lvmama.rhino.pojo.search.FlowSearchStation;
import com.lvmama.rhino.pojo.search.FlowSearchStatistics;


/** 
* @ClassName: FlowSearchService 
* @Description: 搜索相关接口
* @author shenlinli
 * @param <E>
* @date 2017年3月13日 下午2:26:58  
*/
public interface FlowSearchService
{
	
	/** 
	* @Description: 搜索流量相关接口
	* @param @param searhParam
	*/
	List<FlowSearchStatistics> getSearchFlowByDate(RequestSearchParam searhParam);
	List<FlowSearchStatistics> getSearchFlowByChannel(RequestSearchParam searhParam);
	
	
	List<FlowSearchStation> getStations();
	FlowSearchStation getStationNameById(RequestSearchParam searhParam);
	/** 
	* @Description: 搜索关键字相关接口
	* @param @param searhParam
	*/
	List<FlowSearchKeyType> getKeyByType(RequestSearchParam searhParam);
	List<FlowSearchKeyType> getKeyByDate(RequestSearchParam searhParam);
	PageInfo<FlowSearchKey> getKeyByAmount(RequestSearchParam searhParam);
	
	List<FlowSearchArrivalKey> getKeyByCategory(RequestSearchParam searhParam);
	List<FlowSearchArrivalKey> getKeyByKeyword(RequestSearchParam searhParam);
	List<FlowSearchArrivalKey> getKeyByXgword(RequestSearchParam searhParam);
	List<FlowSearchKey> getDetailByType(RequestSearchParam searhParam);
	List<FlowSearchKey> getDetailByStation(RequestSearchParam searhParam);
	
	/** 
	* @Description: 跳转分析相关接口
	* @param @param searhParam
	*/
	List<FlowSearchJump> getJumpByCategory(RequestSearchParam searhParam);
	List<FlowSearchJump> getJumpByDate(RequestSearchParam searhParam);
	List<FlowSearchJump> getMoJumpByResult(RequestSearchParam searhParam);
	
	List<FlowSearchJump> getSwitchByCategory(RequestSearchParam searhParam);
	List<FlowSearchJump> getSwitchByDate(RequestSearchParam searhParam);
	List<FlowSearchJump> getSwitchByResult(RequestSearchParam searhParam);
	
	/** 
	* @Description: 搜索结果分析相关接口
	* @param @param searhParam
	*/
	List<FlowSearchResult> getResultByCategory(RequestSearchParam searhParam);
	List<FlowSearchResult> getResultByDate(RequestSearchParam searhParam);
	PageInfo<FlowSearchResult> getResultByKey(RequestSearchParam searhParam);
	
	/** 
	* @Description: 筛选分析相关接口
	* @param @param searhParam
	*/
	List<FlowSearchFilter> getFilterList(RequestSearchParam searhParam);
	FlowSearchFilterCondition getFilterNameByCode(FlowSearchFilterCondition param);
	boolean insertFilter(FlowSearchFilterCondition param);
	
	/** 
	* @Description: 搜索翻页分析相关接口
	* @param @param searhParam
	*/
	List<FlowSearchPaging> getPagingByCategory(RequestSearchParam searhParam);
	List<FlowSearchPaging> getPagingByPageCode(RequestSearchParam searhParam);
	
}
